package com.ruoqing.admin.api;

import com.ruoqing.core.domain.rquser.UserEntity;
import com.ruoqing.core.dto.BaseResponse;
import com.ruoqing.core.dto.admin.BanUserPageDto;
import com.ruoqing.core.dto.user.UserPageDto;
import com.ruoqing.core.dto.user.UserResponse;
import com.ruoqing.core.enums.UserQueryEnum;

import java.util.List;


/**
	* @author YaoXian
	* @title: UserHandleService
	* @projectName ruoxi-blog
	* @description: 若兮微服务 - 后台管理中心 - 用户操作类业务层接口
	* @date 2020-11-15 15:24
	*/
public interface UserHandleService {
		/**
			*  管理员修改用户信息
			* @param userEntity
			* @param modifyReason
			* @throws Exception
			* @return String
			*/
		String updateUser(UserEntity userEntity,String modifyReason) throws Exception;
		
		/**
			*  管理员删除用户
			* @param userId
			* @return String
			*/
		UserResponse deleteUser(int userId);
		
		/**
			* 根据用户名条件模糊查询用户
			* @param queryParam
			* @param condition
			* @return UserResponse
			*/
		UserResponse blurSelectUserByUserName(String queryParam,int condition);
		
		/**
			*  分页查询用户黑名单
			* @param currentPage
			* @param pageSize
			* @return BanUserPageDto
			*/
		BanUserPageDto findBanUserByPage(Integer currentPage, Integer pageSize);
		
		/**
			* 分页查询用户
			* @param currentPage
			* @param pageSize
			* @return UserPageDto
			*/
		UserPageDto selectUserByPage(int currentPage, int pageSize);
		
		/**
			* 管理员根据条件精确查询用户
			* @param queryParam
			* @param userQueryEnum
			* @return UserResponse
			*/
		UserResponse findUserByCondition(String queryParam, UserQueryEnum userQueryEnum);
		
		/**
			* 管理员添加用户
			* @param userEntity
			* @return BaseResponse
			*/
		BaseResponse insertUser(UserEntity userEntity);
		
		/**
			* 清除Redis缓存中的Log信息
			* @param redisKeys
			*/
		void removeRedisBanUser(List<String> redisKeys);
}
